Layout 決定app的外觀,來介紹幾個常見的Layout元件。
Layout元件主要有分五種:Linear Layout(線性佈局)、Relative Layout(相對佈局)、TableLayout(表格佈局)、AbsoluteLayout(絕對佈局)、FrameLayout(框架佈局)。
●Linear Layout(線性版面佈局):水平線或垂直線的排版設定。
android:orientation="垂直:vertical/水平:horizontal"
Orientation : 決定版面呈現水平或垂直。
垂直範例程式:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <TextView
        android:text="Hello World"
        android:layout_width="165dp"
        android:layout_height="wrap_content"
        android:id="@+id/textView3"
        tools:ignore="HardcodedText" />
    <Button
        android:text="Yes"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/button"
        tools:ignore="HardcodedText" />
    <TextView
        android:text="Taiwan NO.1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/textView4"
        tools:ignore="HardcodedText" />
</LinearLayout>

水平範例程式:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">
    <TextView
        android:text="Hello World"
        android:layout_width="165dp"
        android:layout_height="wrap_content"
        android:id="@+id/textView3"
        tools:ignore="HardcodedText" />
    <Button
        android:text="Yes"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/button"
        tools:ignore="HardcodedText" />
    <TextView
        android:text="Taiwan NO.1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/textView4"
        tools:ignore="HardcodedText" />
</LinearLayout>

●Relative Layout(相對位置版面佈局):使用元件的id來到指定的位子。
※android:layout_above="@+id/物件id名稱":代表在id物件名稱的上方
※android:layout_below="@+id/物件id名稱":代表在id物件名稱的下方
※android:layout_toRightOf="@+id/物件id名稱":代表在id物件名稱的左方
※android:layout_toLeftOf="@+id/物件id名稱":代表在id物件名稱的右方
還有很多可以到這邊來看~
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:shrinkColumns="0" >
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="How are you!"
        android:textColor="@color/red"
        android:textSize = "20sp"
        android:id="@+id/tw11"
        tools:ignore="HardcodedText" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/tno"
        android:text="Taiwan NO.1"
        android:textColor="@color/colorPrimary"
        android:textSize = "10sp"
        android:layout_below="@+id/butt1"
        tools:ignore="HardcodedText,SmallSp" />
    <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/yes"
            android:padding="10px"
            android:id="@+id/butt1"
            android:layout_below="@+id/tw11"
            tools:ignore="PxUsage" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="@color/purple"
        android:textSize = "15sp"
        android:text="Hello World!"
        android:layout_below="@+id/butt1"
        android:layout_toEndOf="@+id/butt1" />
</RelativeLayout>
●TableLayout(表格欄位版面佈局):讓物件像表格一樣排列。
運用標籤 來分格表格
<?xml version="1.0" encoding="utf-8"?>
<TableLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:collapseColumns="*" >
    <TableRow
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:ignore="UselessParent">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="How are you!"
        android:textColor="@color/red"
        android:layout_span="1"
        android:textSize = "20sp"
        tools:ignore="HardcodedText" />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="@color/purple"
            android:textSize = "25sp"
            android:layout_span="1"
            android:text="Hello World!"
            />
    </TableRow>
    <TableRow>
        <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Taiwan NO.1"
        android:textColor="@color/colorPrimary"
        android:layout_span="3"
        android:textSize = "30sp"
            tools:ignore="HardcodedText" />
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/yes"
            android:padding="10px"
            android:id="@+id/butt1"
            tools:ignore="PxUsage" />
    </TableRow>
</TableLayout>
●AbsoluteLayout(絕對版面佈局):用X軸與Y軸來配置版面。
android:layout_x="X軸尺寸px"
android:layout_y="Y軸尺寸px"
範例語法如下:
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android=以下省略................">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        android:layout_x="200px"
        android:layout_y="10px"/>
</AbsoluteLayout>
設定前:
設定後:
●FrameLayout(框架版面佈局):重疊顯示,語法最先下的會出現在最後面。
如圖中紅色的「How are you!」幾乎快看不見了,紫色的「Hello World!」還有一點明顯,
藍色的「Taiwan NO.1」就比較清楚。

範例語法如下:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android=以下省略................">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="How are you!"
        android:textColor="@color/red"
        android:textSize = "20sp"
        tools:ignore="HardcodedText" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="@color/purple"
        android:textSize = "25sp"
        android:text="Hello World!"
        />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Taiwan NO.1"
        android:textColor="@color/colorPrimary"
        android:textSize = "30sp"
        tools:ignore="HardcodedText" />
</FrameLayout>